www.gusucode.com > C++ 使用CMutex 类实现线程同步-源码程序 > C++ 使用CMutex 类实现线程同步-源码程序\code\1.cpp

    #include <windows.h>								//包含头文件
#include <stdio.h>
#include <afxmt.h>
//Download by http://www.NewXing.com
DWORD WINAPI myfun1(							//声明线程函数
  LPVOID lpParameter   
);
DWORD WINAPI myfun2(
  LPVOID lpParameter   
);
CCriticalSection m_Sec;								//定义全局变量m_Sec
int a=0;											//定义全局变量a
main()
{	
 HANDLE h1,h2;									//定义线程句柄
	h1=::CreateThread(NULL,0,myfun1,NULL,0,NULL);		//创建线程1
printf("使用CMutex 类实现线程同步\r\n");
	printf("线程1开始运行!\r\n");
	h2=::CreateThread(NULL,0,myfun2,NULL,0,NULL);		//创建线程2
	printf("线程2开始运行!\r\n");
::Sleep(10000);								//程序睡眠10秒
::CloseHandle(h1);
::CloseHandle(h2);
  }

DWORD WINAPI myfun1(LPVOID lpParameter) 			//线程函数1
{
   m_Sec.Lock();									//锁定临界区
   a+=1;											//变量加1
   printf("%d",a);									//输出变量
   m_Sec.Unlock();								//对临界区进行解锁
   return 0;
    }
DWORD WINAPI myfun2(LPVOID lpParameter) 			//线程函数2
{
   m_Sec.Lock();									//锁定临界区
   a+=1;											//变量加1
   printf("%d",a);									//输出变量
   m_Sec.Unlock();								//对临界区进行解锁
   return 0;
    }